package com.manger.common.tcp.encode;

import com.manger.common.tcp.constant.TcpDataType;
import com.manger.common.utils.SocketByteConvertUtils;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;

import java.nio.ByteOrder;

public  abstract class BaseEncode {

    private TcpDataType tcpDataType;

    public abstract byte[] encode(String data) throws Exception;

    public final  ByteBuf head(TcpDataType type) {
        ByteBuf buf = Unpooled.buffer();
      //  buf.order(ByteOrder.LITTLE_ENDIAN); // 切换到小端字节序，默认大端数据
        buf.writeBytes(SocketByteConvertUtils.bigEndianIntTo2Byte(10086));
        buf.writeBytes(SocketByteConvertUtils.bigEndianIntTo1Byte(type.getCode()));
        return buf;
    }

    public final void setTcpDataType(TcpDataType tcpDataType){
        this.tcpDataType = tcpDataType;
    }

    public final TcpDataType getTcpDataType() {
        return tcpDataType;
    }
}
